﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using clEntidad;

namespace clBD
{
    public class BDEquipo:BDBase 
    {
        public BDEquipo(OleDbConnection cn):base(cn){ }
        public BDEquipo(OleDbConnection cn, OleDbTransaction trx) : base(cn, trx) { }
        public OleDbDataReader getByVisita(int idVisita)
        {
//            String query = "select tipo,marca,modelo,num_serie " +
//                "from equipo where ult_ingreso=" + idVisita;
            String query = "select tipo,marca,modelo,num_serie " +
                "from equipo where ult_ingreso=" + idVisita;
            return execDr(query);
        }

        public OleDbDataReader get(String numSerie)
        {
            String query = "select tipo,marca,modelo,ult_ingreso " +
                "from equipo where num_serie='" + numSerie.Trim().ToUpper() + "'";
            //String query = "select tipo,marca,modelo " +
            //    "from equipo where num_serie='" + numSerie.Trim().ToUpper() + "'";
            return execDr(query);
        }
        //Modo "I" Ingreso, "S" Salida "" Ninguno
        public void grabar(Equipo elemento, int idVisita, string modo)
        {
            String campo = "";
            if (modo.Equals("I"))
            {
                campo = "ingreso";
            }
            else if (modo.Equals("S"))
            {
                campo = "salida";
            }
            String query = "select 1 from equipo where num_serie='" + 
                elemento.numSerie.Trim().ToUpper()  + "'";
            OleDbDataReader dr = execDr(query);
            if (!dr.HasRows)
            {
                query = "insert into equipo(num_serie,tipo,marca,modelo, ult_ingreso ";
                if (!campo.Trim().Equals(""))
                {
                    query = query + "," + campo;
                }
                query = query + ") values ('" + elemento.numSerie.Trim().ToUpper() + "','"
                    + elemento.tipo.Trim().ToUpper() + "','"
                    + elemento.marca.Trim().ToUpper() + "','"
                    + elemento.modelo.Trim().ToUpper() + "',"
                    + idVisita;
                if (!campo.Trim().Equals(""))
                {
                    query = query + ",now";
                }
                query = query + ")";
            }
            else
            {
                query = "update equipo set tipo='" + elemento.tipo.Trim().ToUpper()
                    + "',marca ='" + elemento.marca.Trim().ToUpper()
                    + "',modelo='" + elemento.modelo.Trim().ToUpper()
                    + "',ult_ingreso=" + idVisita;
                if (modo.Trim().Equals("I"))
                {
                    query = query + ",ingreso=now,salida=null ";
                }
                else if (modo.Trim().Equals("S"))
                {
                    query = query + ",salida=now ";
                }
                query = query + " where num_serie='" + elemento.numSerie.Trim().ToUpper() + "'";
            }
            execute(query);
        }
    }
}
